package com.itheima.singleinstance;

public class Test {
    public static void main(String[] args) {
        A a1 = A.getInstance();
        A a2 = A.getInstance();
        System.out.println(a1==a2);

        B b1 = B.getInstance();
        B b2 = B.getInstance();
        System.out.println(b1==b2);

    }
}
//1.饿汉单例模式 拿对象时，对象早已创建好
class A{
    //1.私有化构造器
   private A(){

   }
   //2.定义一个类变量记住一个,基于本类的唯一一个对象
//    public static A a = new A();  //A.a=null  这里有缺陷，可以被干掉
//    public static final A a=new A();//用final修饰，不能被干掉

    private static A a=new A();//饿汉单例模式 拿对象时，对象早已创建好
    public static A getInstance(){
        return a;
    }
}
//2.懒汉单例模式 拿对象时，对象才创建
class B{
    //1.私有化构造器
    private B(){

    }
    //2.定义静态变量存储单例
    private static B b;
    //3.提供获取实例的方法
    public static B getInstance(){
        if(b==null){
            System.out.println("创建");
            b=new B();

        }
        System.out.println("获取");
        return b;
    }
}

